package org.example.myleet.p1004;

public class Solution {
    /**
     * 3 ms
     * 双指针+滑动窗口
     */
    public int longestOnes(int[] A, int K) {
        //n-A的长度，fuel-还剩可以转化0的次数，l-左指针，r-右指针
        int n = A.length, fuel = K, l = 0, r = 0;
        //让右指针一直前进至滑出数组为止
        while (r < n) {
            if (A[r] == 0) {
                //进入窗口的数是0，消耗一个fuel
                --fuel;
            }
            if (fuel < 0) {
                //fuel是负值，左指针前进，保持窗口大小
                if (A[l] == 0) {
                    //左指针前进过程中从窗口中弹出一个0，补充一个fuel
                    ++fuel;
                }
                ++l;
            }
            ++r;
        }
        //最终窗口能延伸的最大长度就是结果
        return r - l;
    }
}
